home *** CD-ROM | disk | FTP | other *** search
/ InfoMagic Internet Tools 1993 July / Internet Tools.iso / RockRidge / mail / pp / pp-6.0 / Lib / or / or_misc.c < prev    next >
Encoding:
C/C++ Source or Header  |  1991-12-18  |  2.4 KB  |  162 lines

  1. /* or_misc.c: misc or-name handling routines */
  2.  
  3. # ifndef lint
  4. static char Rcsid[] = "@(#)$Header: /xtel/pp/pp-beta/Lib/or/RCS/or_misc.c,v 6.0 1991/12/18 20:23:08 jpo Rel $";
  5. # endif
  6.  
  7. /*
  8.  * $Header: /xtel/pp/pp-beta/Lib/or/RCS/or_misc.c,v 6.0 1991/12/18 20:23:08 jpo Rel $
  9.  *
  10.  * $Log: or_misc.c,v $
  11.  * Revision 6.0  1991/12/18  20:23:08  jpo
  12.  * Release 6.0
  13.  *
  14.  */
  15.  
  16.  
  17.  
  18. #include "util.h"
  19. #include "table.h"
  20. #include "or.h"
  21. #include "ap.h"
  22. #include <varargs.h>
  23. #include <isode/cmd_srch.h>
  24.  
  25. extern CMD_TABLE ortbl_ddvalid[];
  26.  
  27. extern char             *loc_dom_site;
  28. extern char             *loc_or;
  29.  
  30. OR_ptr                  loc_ortree;
  31.  
  32.  
  33.  
  34.  
  35. /* ---------------------  Start  Routines  -------------------------------- */
  36.  
  37.  
  38.  
  39.  
  40. int or_init()
  41. {
  42.     char        tbuf[LINESIZE];
  43.  
  44.  
  45.     PP_DBG (("Lib/or_init()"));
  46.  
  47.     if (loc_or == NULLCP || *loc_or == '\0') {
  48.         PP_LOG (LLOG_EXCEPTIONS, ("Lib/or_init: loc_or NULL !"));
  49.         return NOTOK;
  50.     }
  51.     (void) strcpy (tbuf, loc_or);
  52.     loc_ortree = or_std2or (tbuf);
  53.  
  54.     if (loc_ortree == NULLOR) {
  55.     PP_LOG (LLOG_EXCEPTIONS, ("Lib/or_init: loc_ortree NULL! %s", loc_or));
  56.     return NOTOK;
  57.     }
  58.  
  59.     return OK;
  60. }
  61.  
  62.  
  63.  
  64.  
  65. /*
  66. domain syntax is valid if it contains  
  67. one or more ASCII chars EXCEPT FOR  specials spaces and ctrls
  68. */
  69.  
  70. int or_isdomsyntax (s)
  71. register char   *s;
  72. {
  73.  
  74.     PP_DBG (("Lib/or_isdomsyntax('%s')", s));
  75.  
  76.     for (; *s != '\0'; s++) {
  77.         switch (*s) {
  78.  
  79.         case '(':
  80.         case ')':
  81.         case '<':
  82.         case '>':
  83.         case '@':
  84.         case ',':
  85.         case ';':
  86.         case ':':
  87.         case '\\':
  88.         case '"':
  89.         case '.':
  90.         case '[':
  91.         case ']':
  92.         case ' ':
  93.             /* --- specials --- */
  94.             return FALSE;
  95.  
  96.         default:
  97.             if (!isascii (*s))    return FALSE;
  98.             if (iscntrl (*s))    return FALSE;
  99.             break;
  100.         }
  101.     }
  102.  
  103.     return TRUE;
  104. }
  105.  
  106.  
  107. int or_ddname_chk (key)
  108. char    *key;
  109. {
  110.     int    value = cmd_srch(key, ortbl_ddvalid);
  111.  
  112.     if (value == OR_DDVALID_RFC822
  113.         || value == OR_DDVALID_X40088
  114.         || value == OR_DDVALID_JNT
  115.         || value == OR_DDVALID_UUCP)
  116.         return TRUE;
  117.     return FALSE;
  118. }
  119.  
  120.  
  121.  
  122.  
  123. int rfc_space (s)
  124. char  *s;
  125. {
  126.     int    retval = TRUE;
  127.  
  128.     for (; *s != '\0'; s++)
  129.     if (*s != ' ') {
  130.         retval = FALSE;
  131.         break;
  132.     }
  133.     PP_DBG (("Lib/rfc_space ('%d')", retval));
  134.     return retval;
  135. }
  136.  
  137. #ifdef lint
  138. /* VARARGS1 */
  139. int or_lose (str)
  140. char *str;
  141. {
  142.     return or_lose (str);
  143. }
  144. #else
  145. int or_lose (va_alist)
  146. va_dcl
  147. {
  148.     va_list ap;
  149.     extern char or_error[];
  150.  
  151.     va_start (ap);
  152.  
  153.     _asprintf (or_error, NULLCP, ap);
  154.     
  155.     PP_LOG (LLOG_EXCEPTIONS, ("or_lose: %s", or_error));
  156.  
  157.     va_end(ap);
  158.  
  159.     return NOTOK;
  160. }
  161. #endif
  162.